@@ -20,7 +20,7 @@ from coupon.models import UserCouponInfo, CouponInfo |
||
| 20 | 20 |
from integral.models import SaleclerkSubmitLogInfo |
| 21 | 21 |
from logs.models import MchInfoEncryptLogInfo |
| 22 | 22 |
from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo |
| 23 |
-from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo |
|
| 23 |
+from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo, GoodsInfo |
|
| 24 | 24 |
from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo |
| 25 | 25 |
from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode, |
| 26 | 26 |
ProductMachineStatusCode, UserStatusCode) |
@@ -1198,3 +1198,129 @@ def coupon_delete(request): |
||
| 1198 | 1198 |
|
| 1199 | 1199 |
return response(200, 'CouponInfo Delete Success', u'劵删除成功') |
| 1200 | 1200 |
|
| 1201 |
+def member_goods_list(request): |
|
| 1202 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 1203 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 1204 |
+ title = request.POST.get('title', '')
|
|
| 1205 |
+ page = request.POST.get('page', 1)
|
|
| 1206 |
+ num = request.POST.get('num', 20)
|
|
| 1207 |
+ |
|
| 1208 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
| 1209 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
| 1210 |
+ |
|
| 1211 |
+ try: |
|
| 1212 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 1213 |
+ except AdministratorInfo.DoesNotExist: |
|
| 1214 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 1215 |
+ |
|
| 1216 |
+ logs = GoodsInfo.objects.filter(title__icontains=title, only_for_member=False).order_by('-created_at')
|
|
| 1217 |
+ |
|
| 1218 |
+ count = logs.count() |
|
| 1219 |
+ logs, left = pagination(logs, page, num) |
|
| 1220 |
+ logs = [log.admindata for log in logs] |
|
| 1221 |
+ return response(200, 'Get Member Goods Success', u'获取会员商品成功', data={
|
|
| 1222 |
+ 'logs': logs, |
|
| 1223 |
+ 'left': left, |
|
| 1224 |
+ 'count': count |
|
| 1225 |
+ }) |
|
| 1226 |
+ |
|
| 1227 |
+def member_goods_details(request): |
|
| 1228 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 1229 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 1230 |
+ good_id = request.POST.get('good_id', '')
|
|
| 1231 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
| 1232 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
| 1233 |
+ |
|
| 1234 |
+ try: |
|
| 1235 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 1236 |
+ except AdministratorInfo.DoesNotExist: |
|
| 1237 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 1238 |
+ |
|
| 1239 |
+ try: |
|
| 1240 |
+ log = GoodsInfo.objects.get(good_id=good_id) |
|
| 1241 |
+ except: |
|
| 1242 |
+ return response() |
|
| 1243 |
+ |
|
| 1244 |
+ log = log.admindetails |
|
| 1245 |
+ |
|
| 1246 |
+ return response(200, 'Get Member Goods Details Success', u'获取积分商品详情成功', data={
|
|
| 1247 |
+ 'log': log, |
|
| 1248 |
+ }) |
|
| 1249 |
+ |
|
| 1250 |
+def member_goods_update(request): |
|
| 1251 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 1252 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 1253 |
+ good_id = request.POST.get('good_id', '')
|
|
| 1254 |
+ title = request.POST.get('title', '')
|
|
| 1255 |
+ desc = request.POST.get('desc', '')
|
|
| 1256 |
+ value = int(request.POST.get('value', 0))
|
|
| 1257 |
+ left_num = int(request.POST.get('left_num', 0))
|
|
| 1258 |
+ image = request.POST.get('image_path', '')
|
|
| 1259 |
+ coupon_id = request.POST.get('coupon_id', '')
|
|
| 1260 |
+ slider_image = request.POST.get('slider_path', '')
|
|
| 1261 |
+ integral = int(request.POST.get('integral', 0))
|
|
| 1262 |
+ fee = int(request.POST.get('fee', 0))
|
|
| 1263 |
+ |
|
| 1264 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
| 1265 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
| 1266 |
+ |
|
| 1267 |
+ try: |
|
| 1268 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 1269 |
+ except AdministratorInfo.DoesNotExist: |
|
| 1270 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 1271 |
+ |
|
| 1272 |
+ try: |
|
| 1273 |
+ log = GoodsInfo.objects.get(good_id=good_id, status=True) |
|
| 1274 |
+ except: |
|
| 1275 |
+ return response() |
|
| 1276 |
+ |
|
| 1277 |
+ log.title = title |
|
| 1278 |
+ log.desc = desc |
|
| 1279 |
+ log.value = value |
|
| 1280 |
+ log.left_num = left_num |
|
| 1281 |
+ log.image = image |
|
| 1282 |
+ log.coupon_id = coupon_id |
|
| 1283 |
+ log.slider_image = slider_image |
|
| 1284 |
+ log.integral = integral |
|
| 1285 |
+ log.fee = fee |
|
| 1286 |
+ log.save() |
|
| 1287 |
+ |
|
| 1288 |
+ return response(200, 'GoodsInfo Update Success', u'积分商品更新成功') |
|
| 1289 |
+ |
|
| 1290 |
+def member_goods_create(request): |
|
| 1291 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 1292 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 1293 |
+ good_type = int(request.POST.get('good_type', 0))
|
|
| 1294 |
+ title = request.POST.get('title', '')
|
|
| 1295 |
+ desc = request.POST.get('desc', '')
|
|
| 1296 |
+ value = int(request.POST.get('value', 0))
|
|
| 1297 |
+ left_num = int(request.POST.get('left_num', 0))
|
|
| 1298 |
+ image = request.POST.get('image_path', '')
|
|
| 1299 |
+ coupon_id = request.POST.get('coupon_id', '')
|
|
| 1300 |
+ slider_image = request.POST.get('slider_path', '')
|
|
| 1301 |
+ integral = int(request.POST.get('integral', 0))
|
|
| 1302 |
+ fee = int(request.POST.get('fee', 0))
|
|
| 1303 |
+ |
|
| 1304 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
| 1305 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
| 1306 |
+ |
|
| 1307 |
+ try: |
|
| 1308 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 1309 |
+ except AdministratorInfo.DoesNotExist: |
|
| 1310 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 1311 |
+ |
|
| 1312 |
+ GoodsInfo.objects.create( |
|
| 1313 |
+ brand_id=administrator.brand_id, |
|
| 1314 |
+ good_type=good_type, |
|
| 1315 |
+ title=title, |
|
| 1316 |
+ desc=desc, |
|
| 1317 |
+ value=value, |
|
| 1318 |
+ left_num=left_num, |
|
| 1319 |
+ image=image, |
|
| 1320 |
+ coupon_id=coupon_id, |
|
| 1321 |
+ slider_image=slider_image, |
|
| 1322 |
+ integral=integral, |
|
| 1323 |
+ fee=fee, |
|
| 1324 |
+ ) |
|
| 1325 |
+ |
|
| 1326 |
+ return response(200, 'GoodsInfo Create Success', u'积分商品创建成功') |
@@ -172,6 +172,11 @@ urlpatterns += [ |
||
| 172 | 172 |
url(r'^admin/coupon/create$', admin_views.coupon_create, name='coupon_create'), |
| 173 | 173 |
url(r'^admin/coupon/update$', admin_views.coupon_update, name='coupon_update'), |
| 174 | 174 |
url(r'^admin/coupon/delete$', admin_views.coupon_delete, name='coupon_delete'), |
| 175 |
+ |
|
| 176 |
+ url(r'^admin/member/goods/list$', admin_views.member_goods_list, name='member_goods_list'), |
|
| 177 |
+ url(r'^admin/member/goods/details$', admin_views.member_goods_details, name='member_goods_details'), |
|
| 178 |
+ url(r'^admin/member/goods/create$', admin_views.member_goods_create, name='member_goods_create'), |
|
| 179 |
+ url(r'^admin/member/goods/update$', admin_views.member_goods_update, name='member_goods_update'), |
|
| 175 | 180 |
] |
| 176 | 181 |
|
| 177 | 182 |
urlpatterns += [ |
@@ -7,6 +7,7 @@ from shortuuidfield import ShortUUIDField |
||
| 7 | 7 |
from TimeConvert import TimeConvert as tc |
| 8 | 8 |
|
| 9 | 9 |
from mch.models import ModelInfo |
| 10 |
+from coupon.models import CouponInfo |
|
| 10 | 11 |
from simditor.fields import RichTextField |
| 11 | 12 |
|
| 12 | 13 |
|
@@ -97,6 +98,50 @@ class GoodsInfo(BaseModelMixin): |
||
| 97 | 98 |
detail['desc'] = self.desc |
| 98 | 99 |
return detail |
| 99 | 100 |
|
| 101 |
+ @property |
|
| 102 |
+ def admindata(self): |
|
| 103 |
+ try: |
|
| 104 |
+ coupon = CouponInfo.objects.get(coupon_id=self.coupon_id).admindata |
|
| 105 |
+ except: |
|
| 106 |
+ coupon = {}
|
|
| 107 |
+ return {
|
|
| 108 |
+ 'good_id': self.good_id, |
|
| 109 |
+ 'good_type': self.good_type, |
|
| 110 |
+ 'title': self.title, |
|
| 111 |
+ 'image': self.image_url, |
|
| 112 |
+ 'image_path': self.image_path, |
|
| 113 |
+ 'slider_image': self.slider_image_url, |
|
| 114 |
+ 'slider_path': self.slider_image_path, |
|
| 115 |
+ 'integral': self.integral, |
|
| 116 |
+ 'fee': self.fee, |
|
| 117 |
+ 'value': self.value, |
|
| 118 |
+ 'left_num': self.left_num, |
|
| 119 |
+ 'coupon': coupon, |
|
| 120 |
+ 'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'), |
|
| 121 |
+ } |
|
| 122 |
+ |
|
| 123 |
+ @property |
|
| 124 |
+ def admindetails(self): |
|
| 125 |
+ try: |
|
| 126 |
+ coupon = CouponInfo.objects.get(coupon_id=self.coupon_id).admindata |
|
| 127 |
+ except: |
|
| 128 |
+ coupon = {}
|
|
| 129 |
+ return {
|
|
| 130 |
+ 'good_id': self.good_id, |
|
| 131 |
+ 'good_type': self.good_type, |
|
| 132 |
+ 'title': self.title, |
|
| 133 |
+ 'image': self.image_url, |
|
| 134 |
+ 'image_path': self.image_path, |
|
| 135 |
+ 'slider_image': self.slider_image_url, |
|
| 136 |
+ 'slider_path': self.slider_image_path, |
|
| 137 |
+ 'integral': self.integral, |
|
| 138 |
+ 'fee': self.fee, |
|
| 139 |
+ 'value': self.value, |
|
| 140 |
+ 'desc': self.desc, |
|
| 141 |
+ 'left_num': self.left_num, |
|
| 142 |
+ 'coupon': coupon, |
|
| 143 |
+ 'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'), |
|
| 144 |
+ } |
|
| 100 | 145 |
|
| 101 | 146 |
class GoodsOrderInfo(BaseModelMixin): |
| 102 | 147 |
PHYSICAL = 0 |